#include "arbre.h"

int main(int argc, char **argv)
{
  Arbre arbre1;
  Arbre arbre2;
  Arbre arbre3;

  printf("InitArbreVide ... ");
  fflush(stdout);
  initArbreVide(&arbre1);
  printf("Ok.\n");
  printf("Destruction ... ");
  detruireArbre(&arbre1);
  printf("Ok.\n");
  printf("InitArbreEntier ... ");
  fflush(stdout);
  initArbreEntier(&arbre1, 3);
  printf("Ok.\n");
  printf("InitArbreCopie ... ");
  fflush(stdout);
  initArbreCopie(&arbre2, &arbre1);
  printf("Ok.\n");
  printf("additionArbres ... ");
  fflush(stdout);
  additionArbres(&arbre1, &arbre2, &arbre3);
  printf("Ok.\n");
  printf("valeurArbre 3 + 3 : %.0f\n", valeurArbre(&arbre3));
  printf("Destruction ... ");
  detruireArbre(&arbre1);
  printf("Ok.\n");
  printf("Destruction ... ");
  detruireArbre(&arbre2);
  printf("Ok.\n");
  printf("Destruction ... ");
  detruireArbre(&arbre3);
  printf("Ok.\n");
  printf("initArbreExpression (5 + 6) * 30 ...");
  fflush(stdout);
  initArbreExpression(&arbre1, "(5 + 6) * 30");
  printf("Ok.\n");
  printf("Affichage de l'arbre dans la forme arithmétique : ");
  fflush(stdout);
  afficheArbreExpression(&arbre1);
  printf(" ... Ok.\n");
  printf("valeurArbre (5 + 6) * 30 : %.0f\n", valeurArbre(&arbre1));


  printf("initArbreExpression (10 - 610) / 3 ...");
  fflush(stdout);
  initArbreExpression(&arbre2, "(10 - 610) / 3");
  printf("Ok.\n");
  printf("Affichage de l'arbre dans la forme arithmétique : ");
  fflush(stdout);
  afficheArbreExpression(&arbre2);
  printf(" ... Ok.\n");
  printf("valeurArbre (10 - 610) / 3 : %.0f\n", valeurArbre(&arbre2));
  
  printf("soustraction des précédents arbres  (10 - 610) / 3 - (5 + 6) * 30 ...");
  fflush(stdout);
  soustractionArbres(&arbre1, &arbre2, &arbre3);
  printf("Ok.\n");
  printf("Affichage de l'arbre dans la forme arithmétique : ");
  fflush(stdout);
  afficheArbreExpression(&arbre3);
  printf(" ... Ok.\n");
  printf("Affichage de l'arbre dans la forme arbre : \n");
  afficheArbre(&arbre3);
  printf("... Ok.\n");
  printf("valeurArbre  (10 - 610) / 3 - (5 + 6) * 30 : %.0f\n", valeurArbre(&arbre3));
  printf("Destruction ... ");
  detruireArbre(&arbre1);
  printf("Ok.\n");
  printf("Destruction ... ");
  detruireArbre(&arbre2);
  printf("Ok.\n");
  printf("Destruction ... ");
  detruireArbre(&arbre3);
  printf("Ok.\n");

  printf("initArbreExpression (10 + 6) * 3 ...");
  fflush(stdout);
  initArbreExpression(&arbre2, "(10 + 6) * 3");
  printf("Ok.\n");
  printf("Affichage de l'arbre dans la forme arithmétique : ");
  fflush(stdout);
  afficheArbreExpression(&arbre2);
  printf(" ... Ok.\n");;
  printf("Affichage de l'arbre dans la forme arbre : \n");
  afficheArbre(&arbre2);
  printf("... Ok.\n");
  printf("developpeProduitArbre ... ");
  fflush(stdout);
  developpeProduitArbre(&arbre2, &arbre3);
  printf("Ok.\n");
  printf("Affichage de l'arbre dans la forme arithmétique developpé : ");
  fflush(stdout);
  afficheArbreExpression(&arbre3);
  printf(" ... Ok.\n");
  printf("Affichage de l'arbre dans la forme arbre : \n");
  afficheArbre(&arbre3);
  printf("... Ok.\n");
  printf("valeurArbre (10 + 6) * 3 : %.0f\n", valeurArbre(&arbre2));
  printf("valeurArbre 10 * 3 + 6 * 3 : %.0f\n", valeurArbre(&arbre3));
  printf("Destruction ... ");
  detruireArbre(&arbre2);
  printf("Ok.\n");
  printf("Destruction ... ");
  detruireArbre(&arbre3);
  printf("Ok.\n");

  return 0;
}

